{smcl}
{* 22may2006}{...}
{cmd:help mata mm_histogram()}
{hline}

{title:Title}

{p 4 4 2}
{bf:mm_histogram() -- Produce histogram data}

{title:Syntax}

{p 8 23 2}
{it:real matrix}
{cmd:mm_histogram(}{it:x} [{cmd:,} {it:w}{cmd:,}
{it:g}{cmd:,} {it:dir} ]{cmd:)}


{p 4 4 2}
where

{p 12 16 2}
{it:x}:  {it:real colvector} containing data points

{p 12 16 2}
{it:w}:  {it:real colvector} containing weights

{p 12 16 2}
{it:g}:  {it:real colvector} containing the interval boundaries;
default is {it:g} = {cmd:rangen(min(}{it:x}{cmd:), max(}{it:x}{cmd:), 11)}

{p 10 16 2}
{it:dir}:  {it:real scalar} specifying the direction of the
intervals (default: right open)


{title:Description}

{p 4 4 2} {cmd:mm_histogram()} computes the density of {it:x}
for the intervals defined by the grid points in {it:g}
({it:g} must be sorted). The default is to use right open
intervals (with the last interval closed). However,
{it:dir}!=0 specifies that left open intervals be used (with the first
interval closed).

{p 4 4 2}{it:w} specifies weights associated with
the observations in {it:x}. Omit {it:w}, or specify {it:w} as 1 to obtain
unweighted results. Note that {it:x}, {it:w}, and {it:g}
should not contain missing values.

{p 4 4 2}
{cmd:mm_histogram()} returns a matrix containing
for each interval the center (first column), width
(second column) and the density (third column).


{title:Remarks}

{p 4 4 2} Example:

        {com}: x = invnormal(uniform(100,1))
        {res}
        {com}: g = mm_makegrid(x, 6)
        {res}
        {com}: mm_histogram(x, 1, g)
        {res}       {txt}           1              2              3
            {c TLC}{hline 46}{c TRC}
          1 {c |}  {res}-2.257750662    1.036214862    .0579030491{txt}  {c |}
          2 {c |}  {res}  -1.2215358    1.036214862    .1737091472{txt}  {c |}
          3 {c |}  {res}-.1853209385    1.036214862    .3088162617{txt}  {c |}
          4 {c |}  {res} .8508939234    1.036214862    .3377677863{txt}  {c |}
          5 {c |}  {res} 1.887108785    1.036214862    .0868545736{txt}  {c |}
            {c BLC}{hline 46}{c BRC}{txt}

{title:Conformability}

    {cmd:mm_histogram(}{it:x}{cmd:,} {it:w}{cmd:,} {it:g}{cmd:,} {it:dir}{cmd:)}
             {it:x}:  {it:n x} 1
             {it:w}:  {it:n x} 1 or 1 {it:x} 1
             {it:g}:  {it:m x} 1, {it:m}>=2
           {it:dir}:  1 {it:x} 1
        {it:result}:  {it:m}-1 {it:x} 3.


{title:Diagnostics}

{p 4 4 2}{cmd:mm_histogram()} abort with error if
{cmd:min(}{it:x}{cmd:)} < {it:g}{cmd:[1]} or
{cmd:max(}{it:x}{cmd:)} > {it:g}{cmd:[rows(}{it:g}{cmd:)]}.

{p 4 4 2}{cmd:mm_histogram()} produces erroneous results if
{it:g} is not sorted.


{title:Source code}

{p 4 4 2}
{help moremata_source##mm_histogram:mm_histogram.mata}


{title:Author}

{p 4 4 2} Ben Jann, University of Bern, jann@soz.unibe.ch


{title:Also see}

{p 4 13 2}
Online:  help for
{bf:{help mf_mm_linbin:mm_makegrid()}},
{bf:{help mf_range:[M-5] range()}},
{bf:{help m4_utility:[M-4] utility}},
{bf:{help twoway__histogram_gen}},
{bf:{help moremata}}
{p_end}
